SSL証明書の変更が予想されるAWSサービスのエンドポイントを確認してみた
はじめに
AWSチームのすずきです。
AWSのサービスで利用されているSSL証明書について、アマゾンの自社認証局 Amazon Trust Services への切替案内が2017年11月にありました。
アマゾンの認証局は、ACM(AWS Certificate Manager)でも利用されていますが、 古いOSやアプリケーションなどでアマゾンの証明局を信頼する設定を持たない環境では、ハンドシェークに失敗しHTTPS接続が不能となる事がありました。
今回、AWS東京リージョン(ap-northeast-1)のエンドポイントを対象にSSL証明書の発行者(Issuer)を確認し、 今後(2018年1月以降)、SSL証明書切替に伴う影響が発生しうるAWSサービスを確認する機会がありましたので、紹介させて頂きます。
確認方法
OpenSSL
AmazonLinux 2 付属のOpenSSLを利用し、「-showcerts」で表示されるSSL証明書情報から発行者(Issuer)を確認しました。
- バージョン情報
$ openssl version OpenSSL 1.0.2k-fips 26 Jan 2017
- showcerts
$ openssl s_client -connect ec2.ap-northeast-1.amazonaws.com:443 -showcerts < /dev/null 2> /dev/null | grep -A 3 -e "Server certificate" Server certificate subject=/C=US/ST=Washington/L=Seattle/O=Amazon.com, Inc./CN=ec2.ap-northeast-1.amazonaws.com issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
エンドポイント
AWS のリージョンとエンドポイントより、 東京リージョン「ap-northeast-1.amazonaws.com」でHTTPS接続可能なエンドポイントを確認対象としました。
結果
2018年1月20日現在、SSL証明書の発行者(Issuer)別のエンドポイントは以下の通りでした。 Amazon 以外では、DigiCertと Symantecの証明書が利用されている事を確認できました。
DigiCert Inc
- s3.ap-northeast-1.amazonaws.com
Symantec Corporation
- autoscaling.ap-northeast-1.amazonaws.com
- codedeploy.ap-northeast-1.amazonaws.com
- dynamodb.ap-northeast-1.amazonaws.com
- ec2.ap-northeast-1.amazonaws.com
- firehose.ap-northeast-1.amazonaws.com
- greengrass.iot.ap-northeast-1.amazonaws.com
- iot.ap-northeast-1.amazonaws.com
- kinesis.ap-northeast-1.amazonaws.com
- monitoring.ap-northeast-1.amazonaws.com
- rds.ap-northeast-1.amazonaws.com
- sns.ap-northeast-1.amazonaws.com
- sqs.ap-northeast-1.amazonaws.com
- streams.dynamodb.ap-northeast-1.amazonaws.com
Amazon(自社認証局)
- ACM.ap-northeast-1.amazonaws.com
- apigateway.ap-northeast-1.amazonaws.com
- appstream2.ap-northeast-1.amazonaws.com
- athena.ap-northeast-1.amazonaws.com
- batch.ap-northeast-1.amazonaws.com
- cloudformation.ap-northeast-1.amazonaws.com
- cloudhsm.ap-northeast-1.amazonaws.com
- cloudhsmv2.ap-northeast-1.amazonaws.com
- cloudsearch.ap-northeast-1.amazonaws.com
- cloudtrail.ap-northeast-1.amazonaws.com
- codebuild.ap-northeast-1.amazonaws.com
- codecommit.ap-northeast-1.amazonaws.com
- codepipeline.ap-northeast-1.amazonaws.com
- cognito-identity.ap-northeast-1.amazonaws.com
- cognito-idp.ap-northeast-1.amazonaws.com
- cognito-sync.ap-northeast-1.amazonaws.com
- config.ap-northeast-1.amazonaws.com
- datapipeline.ap-northeast-1.amazonaws.com
- directconnect.ap-northeast-1.amazonaws.com
- dms.ap-northeast-1.amazonaws.com
- ds.ap-northeast-1.amazonaws.com
- ecr.ap-northeast-1.amazonaws.com
- ecs.ap-northeast-1.amazonaws.com
- elasticache.ap-northeast-1.amazonaws.com
- elasticbeanstalk-health.ap-northeast-1.amazonaws.com
- elasticbeanstalk.ap-northeast-1.amazonaws.com
- elasticloadbalancing.ap-northeast-1.amazonaws.com
- elasticmapreduce.ap-northeast-1.amazonaws.com
- elastictranscoder.ap-northeast-1.amazonaws.com
- es.ap-northeast-1.amazonaws.com
- events.ap-northeast-1.amazonaws.com
- gamelift.ap-northeast-1.amazonaws.com
- glacier.ap-northeast-1.amazonaws.com
- greengrass.ap-northeast-1.amazonaws.com
- inspector.ap-northeast-1.amazonaws.com
- kinesisvideo.ap-northeast-1.amazonaws.com
- kms.ap-northeast-1.amazonaws.com
- lambda.ap-northeast-1.amazonaws.com
- lightsail.ap-northeast-1.amazonaws.com
- logs.ap-northeast-1.amazonaws.com
- opsworks.ap-northeast-1.amazonaws.com
- polly.ap-northeast-1.amazonaws.com
- redshift.ap-northeast-1.amazonaws.com
- resource-groups.ap-northeast-1.amazonaws.com
- sdb.ap-northeast-1.amazonaws.com
- servicecatalog.ap-northeast-1.amazonaws.com
- snowball.ap-northeast-1.amazonaws.com
- ssm.ap-northeast-1.amazonaws.com
- states.ap-northeast-1.amazonaws.com
- storagegateway.ap-northeast-1.amazonaws.com
- sts.ap-northeast-1.amazonaws.com
- swf.ap-northeast-1.amazonaws.com
- waf-regional.ap-northeast-1.amazonaws.com
- workdocs.ap-northeast-1.amazonaws.com
- workspaces.ap-northeast-1.amazonaws.com
- xray.ap-northeast-1.amazonaws.com
SES
- 東京リージョンでは提供されていないSES、提供リージョンで確認した所、「Symantec」の証明書が利用されていました。
オレゴン
$ openssl s_client -connect email.us-west-2.amazonaws.com:443 -showcerts < /dev/null 2> /dev/null | grep -A 2 -e "Server certificate" | tail -2 subject=/C=US/ST=Washington/L=Seattle/O=Amazon.com, Inc./CN=email.us-west-2.amazonaws.com issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
バージニア
$ openssl s_client -connect email.us-east-1.amazonaws.com:443 -showcerts < /dev/null 2> /dev/null | grep -A 2 -e "Server certificate" | tail -2 subject=/C=US/ST=Washington/L=Seattle/O=Amazon.com, Inc./CN=email.us-east-1.amazonaws.com issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
アイルランド
$ openssl s_client -connect email.eu-west-1.amazonaws.com:443 -showcerts < /dev/null 2> /dev/null | grep -A 2 -e "Server certificate" | tail -2 subject=/C=US/ST=Washington/L=Seattle/O=Amazon.com, Inc./CN=email.eu-west-1.amazonaws.com issuer=/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA - G4
まとめ
2018年1月現在、既に多くのAWSサービスのエンドポイントでAmazon発行の証明書が利用されている事が確認できました。
AWS Certificate Manager (ACM) のリリースされた2016年以前から存在するAWSの主要サービスの中では、 EMR、Redshift、CloudWatch Logs などが Amazon発行の証明書への変更が完了していますが、 今後、S3、EC2、Cloudwatch(monitoring)、RDS、DynamoDB、SQS、SNS、Kinesis(streams,firehose) の 証明書についても Amazon発行証明書への変更が実施されると予想されます。
主要なサービスの証明書については、切替スケジュールについてAWSからの案内があると予想されますが、 長期間、SSL設定(信頼ストア)の更新が実施されていないOS、アプリケーション環境で、 AWS APIを利用して、S3、DynamoDB、EC2、Cloudwatchの参照や、カスタムメトリック登録などを実施している場合には、 SSL証明書ストアの確認や、必要に応じSDK、OS、ミドルウェアのアップデートについても検討頂ければと思います。
補足
Kinesis(Data Streams)
Kinesis(Data Streams)では、2018年2月に Amazon発行の証明書への切替が予定されており、 Kinesisにデータを投入するEC2上で動作するプロデューサーとして提供されている Kinesis Producer Library(KPL)についても version 0.12.6 以降へのアップデートが案内されています。
Transitioning to Amazon Trust Services (ATS) Certificates for the Kinesis Producer Library
ログコレクターとしてFluentd(td-agent)、Fluentdプラグインとして「aws-fluent-plugin-kinesis」の 旧バージョン(v1)を利用されている場合には、事前にご確認頂く事をお薦めします。
https://github.com/awslabs/aws-fluent-plugin-kinesis/blob/v1/README.md
確認スクリプト
- 東京リージョンのSSL証明書確認に利用したスクリプトです
wget -q -O - https://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html \ | grep "\.ap-northeast-1\.amazonaws.com" \ | cut -f 2 -d ">" | cut -f 1 -d "<" \ | grep .amazonaws.com | grep -v "/" | sort -u \ | while read -r ENDPOINT; do ISSUER=`openssl s_client -connect ${ENDPOINT}:443 -showcerts < /dev/null 2> /dev/null | grep -A 2 -e "Server certificate" | grep "issuer="` echo "${ENDPOINT}, ${ISSUER}" >> tmp.txt done # DigiCert Inc cat tmp.txt | grep 'O=DigiCert Inc' | cut -f 1 -d ,| sed 's/^/- /' # Symantec Corporation cat tmp.txt | grep 'O=Symantec Corporation' | cut -f 1 -d , | sed 's/^/- /' # Amazon cat tmp.txt | grep 'O=Amazon' | cut -f 1 -d ,| sed 's/^/- /'